﻿namespace Spacer {
	public interface Activity {
		/// <summary>
		/// Called immediately after being pushed onto the Activity stack.
		/// </summary>
		void Initialize();

		/// <summary>
		/// Called immediately after being pushed back down the Activity stack.
		/// </summary>
		void Paused();

		/// <summary>
		/// Called immediately after being brought to the top of the Activity stack.
		/// </summary>
		void Resumed();

		/// <summary>
		/// Called immediately after being popped off of the Activity stack.
		/// </summary>
		void Shutdown();
		
		/// <summary>
		/// Called at every Game::Update( ... ) while active.
		/// </summary>
		void Update();
		
		/// <summary>
		/// Called at every Game::Draw( ... ) while active.
		/// Surface is set to draw in World coords
		/// </summary>
		void DrawWorld();
		
		/// <summary>
		/// Called at every Game::Draw( ... ) while active.
		/// Surface is set to draw in Screen coords
		/// </summary>
		void DrawOverlay();

		/// <summary>
		/// Indicates whether this Activity is allowed to be pushed back.
		/// </summary>
		/// <returns>True or False</returns>
		bool IsModal();

		/// <summary>
		/// Indicates whether this Activity is transparent and whatever is below will still receive update and draw calls.
		/// </summary>
		/// <returns>True or False</returns>
		bool IsTransparent();

		/// <summary>
		/// Indicates whether this Activity is finished.
		/// When finished it is popped off the Activity stack upon the next Game::Update( ... )
		/// </summary>
		/// <returns>True or False</returns>
		bool IsFinished();
	}
}
